package negocio;

import java.util.Collection;
import java.util.List;

import negocio.exception.LoginInvalido;
import negocio.exception.UsuarioInexistente;
import basica.Categoria;
import basica.Produto;
import basica.Usuario;

public interface IFachada {
	
	// ==================================================
	// MÉTODOS DE USUARIO
	// ==================================================

	public Usuario efetuarLogin(String login, String senha) throws LoginInvalido;
	
	public void inserirOuAtualizar(Usuario usuario);
	
	void desativarUsuario(Usuario usuario) throws UsuarioInexistente;
	
	public List<Usuario> consultarTodosUsuario();

	public Usuario consultarUsuarioPorId(Integer id);
	
	Usuario consultarUsuarioPorCPF(String cpf);
	
	// ==================================================
	// MÉTODOS DE PRODUTO
	// ==================================================

	public void inserirProduto(Produto produto);
	
	public List<Produto> consultarTodosProdutos();

	// ==================================================
	// MÉTODOS DE CATEGORIA
	// ==================================================

	public abstract void inserir(Categoria entidade);

	public abstract List<Categoria> consultarTodosCategorias();
	
	// ==================================================
	// MÉTODOS DE USUARIO-PRODUTO
	// ==================================================
	
	public void inserirProdutoListaUsuario(Usuario usuario, Collection<Produto> selecaoProduto);
	
}
